/**
 * 请求工具类封装
 * @type {function(): (Request.init|init)}
 */
var Request = (function () {
    var Request = function () {
        return new Request.fn.init();
    }

    Request.fn = Request.prototype = {
        constructor: Request,
        init: function () {
            var jq;
            try {
                jq = $;
            } catch (e) {
                alert("请先加载jQuery!");
                return;
            }
            if (!jq) {
                alert("请先加载jQuery!!");
                return;
            }
        },

        /**
         * ajax请求方法封装
         * @param url url（省略/）
         * @param data 数据（json对象，没有就传null）
         * @param async 是否异步（true：是，false：否）
         * @param type 请求类型（或方法，如：GET, POST, PUT...）
         * @param successCallback 成功回调方法（接收一个json对象）
         * @param errorCallback 失败回调方法（接收一个json对象）
         */
        ajax: function (url, data, async, type, successCallback, errorCallback) {
            url = contextPath + url;
            $.ajax({
                url: url,
                type: type,
                async: async,
                data: data ? JSON.stringify(data) : null,
                dateType: 'json',
                contentType: 'application/json',
                success: function (data) {
                    if (successCallback) {
                        if (data.status != 200) {
                            this.error(data);
                        } else {
                            successCallback(data);
                        }
                    }
                },
                error: function (data) {
                    if (errorCallback) {
                        errorCallback(data);
                    } else {
                        alert("请求失败，请联系管理员！");
                    }
                }
            });
        },

        updateSubmitToken: function(id) {
            this.ajax("submit/token/get.do", null, false, 'get', function (data) {
               $("#" + id).val(data.data);
            });
        }
    }

    Request.fn.init.prototype = Request.fn;

    return Request;
})();

var request = new Request();
